"""
@author: xxw
@file: 元类-抽象基类.py
@time: 2023/5/22 10:24
"""
# 元类是创建类的类  -- 最上层的元类就是type
# python中一切皆对象，类也是对象

# 自定义元类 -- 可以拦截类的创建
# 比如说，可以检查类是否具有某些属性，没有这些属性，可以不创建这个类
#
# class MyMeta(type):
#     def __init__(cls,*args):
#         print("my metaclass test")
#
#
# class A(metaclass=MyMeta):
#     def __init__(self):
#         print("A __init__")
# a1 = A()
# print(type(a1))
# print(type(A))

# 面向对象有两种关系
# 1、继承关系  父类子类  继承关系中object是所有类的父类
# 2、创建关系  实例与类的关系  type就是最顶层的类


# 抽象基类  定义了接口规范
# 子类必须实现抽象基类里的抽象方法

from abc import ABC, abstractmethod
class Animal(ABC):
    def breath(self):
        pass

    @abstractmethod
    def eat(self):
        pass

class Dog(Animal):
    def eat(self):
        print("I can eat")

dog = Dog()
dog.eat()

